"""
name: 教学案例2 扩展  使用图标
version: 1.0
"""
import sys
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QApplication, QWidget
from ui_example import Ui_Form
from ui_example5 import Ui_EditForm

class EditForm(QWidget):
    # 自定义信号，当点击界面保存按钮时，发送编辑的数据
    edit_data = pyqtSignal(str)
    # 可以通过初始化函数接收默认数据
    def __init__(self, default_str: str='',  parent=None):
        super().__init__(parent=parent)
        self.ui = Ui_EditForm()
        self.ui.setupUi(self)
        if default_str:
            self.ui.textEdit.setPlainText(default_str)

    def on_pushButton_pressed(self):
        # 将textEdit中的数据利用信号发射传递出去
        self.edit_data.emit(self.ui.textEdit.toPlainText())
        self.ui.textEdit.clear()
        # 保存完毕后自动关闭编辑窗口
        self.close()

class MyDialog(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        self.ui.textEdit.setPlainText('Hello World!')
        self.ui.textEdit.setReadOnly(True)

    def on_pushButton_2_pressed(self):
        # 创建子界面
        self.edit = EditForm(self.ui.textEdit.toPlainText())
        # 使用自定义信号，当子界面edit_data信号发射时，
        # 将信号传递的数据，使用textEdit的setPlainText函数设置其内容
        self.edit.edit_data.connect(self.ui.textEdit.setPlainText)
        self.edit.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    # 创建自定义界面MyDialog的实例（对象）
    dialog = MyDialog()
    dialog.show()
    sys.exit(app.exec_())
